/*
 * My97 DatePicker 4.8 Beta4
 * License: http://www.my97.net/dp/license.asp
 */
var $dp, WdatePicker;
(function () {
  var $ = {
    $langList: [
      {name: "en", charset: "UTF-8"},
      {name: "zh-cn", charset: "gb2312"},
      {name: "zh-tw", charset: "GBK"}
    ],
    $skinList: [
      {name: "default", charset: "gb2312"},
      {name: "whyGreen", charset: "gb2312"},
      {name: "blue", charset: "gb2312"},
      {name: "green", charset: "gb2312"},
      {name: "simple", charset: "gb2312"},
      {name: "ext", charset: "gb2312"},
      {name: "blueFresh", charset: "gb2312"},
      {name: "twoer", charset: "gb2312"},
      {name: "YcloudRed", charset: "gb2312"}
    ],
    $wdate: true,
    $crossFrame: true,
    $preLoad: false,
    $dpPath: "",
    doubleCalendar: false,
    enableKeyboard: true,
    enableInputMask: true,
    autoUpdateOnChanged: null,
    weekMethod: "ISO8601",
    position: {},
    lang: "auto",
    skin: "default",
    dateFmt: "yyyy-MM-dd",
    realDateFmt: "yyyy-MM-dd",
    realTimeFmt: "HH:mm:ss",
    realFullFmt: "%Date %Time",
    minDate: "1900-01-01 00:00:00",
    maxDate: "2099-12-31 23:59:59",
    startDate: "",
    alwaysUseStartDate: false,
    yearOffset: 1911,
    firstDayOfWeek: 0,
    isShowWeek: false,
    highLineWeekDay: true,
    isShowClear: true,
    isShowToday: true,
    isShowOK: true,
    isShowOthers: true,
    readOnly: false,
    errDealMode: 0,
    autoPickDate: null,
    qsEnabled: true,
    autoShowQS: false,
    opposite: false,
    hmsMenuCfg: {H: [1, 6], m: [5, 6], s: [15, 4]},
    opposite: false,

    specialDates: null,
    specialDays: null,
    disabledDates: null,
    disabledDays: null,
    onpicking: null,
    onpicked: null,
    onclearing: null,
    oncleared: null,
    ychanging: null,
    ychanged: null,
    Mchanging: null,
    Mchanged: null,
    dchanging: null,
    dchanged: null,
    Hchanging: null,
    Hchanged: null,
    mchanging: null,
    mchanged: null,
    schanging: null,
    schanged: null,
    eCont: null,
    vel: null,
    elProp: "",
    errMsg: "",
    quickSel: [],
    has: {},
    getRealLang: function () {
      var _ = $.$langList;
      for (var A = 0; A < _.length; A++) {
        if (_[A].name == this.lang) {
          return _[A];
        }
      }
      return _[0]
    }
  };
  WdatePicker = U;
  var Y = window, T = {innerHTML: ""}, N = "document", H = "documentElement",
      C = "getElementsByTagName", V, A, S, G, c, X = navigator.appName;
  if (X == "Microsoft Internet Explorer") {
    S = true;
  } else if (X == "Opera") {
    c = true;
  } else {
    G =
        true;
  }
  A = $.$dpPath || J();
  if ($.$wdate) {
    K(A + "skin/WdatePicker.css");
  }
  V = Y;
  if ($.$crossFrame) {
    try {
      while (V.parent != V && V.parent[N][C]("frameset").length == 0) {
        V = V.parent
      }
    } catch (O) {
    }
  }
  if (!V.$dp) {
    V.$dp =
        {
          ff: G,
          ie: S,
          opera: c,
          status: 0,
          defMinDate: $.minDate,
          defMaxDate: $.maxDate
        };
  }
  B();
  if ($.$preLoad && $dp.status == 0) {
    E(Y, "onload", function () {
      U(null, true)
    });
  }
  if (!Y[N].docMD) {
    E(Y[N], "onmousedown", D, true);
    Y[N].docMD = true
  }
  if (!V[N].docMD) {
    E(V[N], "onmousedown", D, true);
    V[N].docMD = true
  }
  E(Y, "onunload", function () {
    if ($dp.dd) {
      P($dp.dd, "none")
    }
  });

  function B() {
    try {
      V[N], V.$dp = V.$dp || {}
    } catch ($) {
      V = Y;
      $dp = $dp || {}
    }
    var A = {
      win: Y, $: function ($) {
        return (typeof $ == "string") ? Y[N].getElementById($) : $
      }, $D: function ($, _) {
        return this.$DV(this.$($).value, _)
      }, $DV: function (_, $) {
        if (_ != "") {
          this.dt = $dp.cal.splitDate(_, $dp.cal.dateFmt);
          if ($) {
            for (var B in $) {
              if (this.dt[B] === undefined) {
                this.errMsg =
                    "invalid property:" + B;
              } else {
                this.dt[B] += $[B];
                if (B == "M") {
                  var C = $["M"] > 0 ? 1 : 0,
                      A = new Date(this.dt["y"], this.dt["M"], 0).getDate();
                  this.dt["d"] = Math.min(A + C, this.dt["d"])
                }
              }
            }
          }
          if (this.dt.refresh()) {
            return this.dt
          }
        }
        return ""
      }, show: function () {
        var A = V[N].getElementsByTagName("div"), $ = 100000;
        for (var B = 0; B < A.length; B++) {
          var _ = parseInt(A[B].style.zIndex);
          if (_ > $) {
            $ = _
          }
        }
        this.dd.style.zIndex = $ + 2;
        P(this.dd, "block");
        P(this.dd.firstChild, "")
      }, unbind: function ($) {
        $ = this.$($);
        if ($.initcfg) {
          L($, "onclick", function () {
            U($.initcfg)
          });
          L($, "onfocus", function () {
            U($.initcfg)
          })
        }
      }, hide: function () {
        P(this.dd, "none")
      }, attachEvent: E
    };
    for (var _ in A) {
      V.$dp[_] = A[_];
    }
    $dp = V.$dp
  }

  function E(B, _, A, $) {
    if (B.addEventListener) {
      var C = _.replace(/on/, "");
      A._ieEmuEventHandler = function ($) {
        return A($)
      };
      B.addEventListener(C, A._ieEmuEventHandler, $)
    } else {
      B.attachEvent(_, A)
    }
  }

  function L(A, $, _) {
    if (A.removeEventListener) {
      var B = $.replace(/on/, "");
      _._ieEmuEventHandler = function ($) {
        return _($)
      };
      A.removeEventListener(B, _._ieEmuEventHandler, false)
    } else {
      A.detachEvent($, _)
    }
  }

  function a(_, $, A) {
    if (typeof _ != typeof $) {
      return false;
    }
    if (typeof _ == "object") {
      if (!A) {
        for (var B in _) {
          if (typeof $[B] == "undefined") {
            return false;
          }
          if (!a(_[B], $[B], true)) {
            return false
          }
        }
      }
      return true
    } else if (typeof _ == "function" && typeof $ == "function") {
      return _.toString()
          == $.toString();
    } else {
      return _
          == $
    }
  }

  function J() {
    var _, A, $ = Y[N][C]("script");
    for (var B = 0; B < $.length; B++) {
      _ = $[B].getAttribute("src") || "";
      _ = _.substr(0, _.toLowerCase().indexOf("wdatepicker.js"));
      A = _.lastIndexOf("/");
      if (A > 0) {
        _ = _.substring(0, A + 1);
      }
      if (_) {
        break
      }
    }
    return _
  }

  function K(A, $, B) {
    var D = Y[N][C]("HEAD").item(0), _ = Y[N].createElement("link");
    if (D) {
      _.href = A;
      _.rel = "stylesheet";
      _.type = "text/css";
      if ($) {
        _.title = $;
      }
      if (B) {
        _.charset = B;
      }
      D.appendChild(_)
    }
  }

  function F($) {
    $ = $ || V;
    var A = 0, _ = 0;
    while ($ != V) {
      var D = $.parent[N][C]("iframe");
      for (var F = 0; F < D.length; F++) {
        try {
          if (D[F].contentWindow == $) {
            var E = W(D[F]);
            A += E.left;
            _ += E.top;
            break
          }
        } catch (B) {
        }
      }
      $ = $.parent
    }
    return {"leftM": A, "topM": _}
  }

  function W(G, F) {
    if (G.getBoundingClientRect) {
      return G.getBoundingClientRect();
    } else {
      var A = {ROOT_TAG: /^body|html$/i, OP_SCROLL: /^(?:inline|table-row)$/i},
          E = false,
          I = null, _ = G.offsetTop, H = G.offsetLeft, D = G.offsetWidth,
          B = G.offsetHeight,
          C = G.offsetParent;
      if (C != G) {
        while (C) {
          H += C.offsetLeft;
          _ += C.offsetTop;
          if (R(C, "position").toLowerCase() == "fixed") {
            E =
                true;
          } else if (C.tagName.toLowerCase() == "body") {
            I =
                C.ownerDocument.defaultView;
          }
          C = C.offsetParent
        }
      }
      C = G.parentNode;
      while (C.tagName && !A.ROOT_TAG.test(C.tagName)) {
        if (C.scrollTop || C.scrollLeft) {
          if (!A.OP_SCROLL.test(P(C))) {
            if (!c
                || C.style.overflow
                !== "visible") {
              H -= C.scrollLeft;
              _ -= C.scrollTop
            }
          }
        }
        C = C.parentNode
      }
      if (!E) {
        var $ = b(I);
        H -= $.left;
        _ -= $.top
      }
      D += H;
      B += _;
      return {"left": H, "top": _, "right": D, "bottom": B}
    }
  }

  function M($) {
    $ = $ || V;
    var B = $[N],
        A = ($.innerWidth) ? $.innerWidth : (B[H] && B[H].clientWidth)
            ? B[H].clientWidth
            : B.body.offsetWidth,
        _ = ($.innerHeight) ? $.innerHeight : (B[H] && B[H].clientHeight)
            ? B[H].clientHeight
            : B.body.offsetHeight;
    return {"width": A, "height": _}
  }

  function b($) {
    $ = $ || V;
    var B = $[N], A = B[H], _ = B.body;
    B =
        (A && A.scrollTop != null && (A.scrollTop > _.scrollTop || A.scrollLeft
            > _.scrollLeft))
            ? A : _;
    return {"top": B.scrollTop, "left": B.scrollLeft}
  }

  function D($) {
    try {
      var _ = $ ? ($.srcElement || $.target) : null;
      if ($dp.cal && !$dp.eCont && $dp.dd && _ != $dp.el && $dp.dd.style.display
          == "block") {
        $dp.cal.close()
      }
    } catch ($) {
    }
  }

  function Z() {
    $dp.status = 2
  }

  var Q, _;

  function U(K, C) {
    if (!$dp) {
      return;
    }
    B();
    var L = {};
    for (var H in K) {
      L[H] = K[H];
    }
    for (H in $) {
      if (H.substring(0, 1) != "$" && L[H] === undefined) {
        L[H] = $[H];
      }
    }
    if (C) {
      if (!J()) {
        _ = _ || setInterval(function () {
          if (V[N].readyState == "complete") {
            clearInterval(_);
          }
          U(null, true)
        }, 50);
        return
      }
      if ($dp.status == 0) {
        $dp.status = 1;
        L.el = T;
        I(L, true)
      } else {
        return
      }
    } else if (L.eCont) {
      L.eCont = $dp.$(L.eCont);
      L.el = T;
      L.autoPickDate = true;
      L.qsEnabled = false;
      I(L)
    } else {
      if ($.$preLoad && $dp.status != 2) {
        return;
      }
      var F = D();
      if (Y.event === F || F) {
        L.srcEl = F.srcElement || F.target;
        F.cancelBubble = true
      }
      L.el = L.el = $dp.$(L.el || L.srcEl);
      if (!L.el || L.el["My97Mark"] === true || L.el.disabled || ($dp.dd && P(
          $dp.dd)
          != "none"
          && $dp.dd.style.left
          != "-970px")) {
        try {
          if (L.el["My97Mark"]) {
            L.el["My97Mark"] = false
          }
        } catch (A) {
        }
        return
      }
      if (F && L.el.nodeType == 1 && !a(L.el.initcfg, K)) {
        $dp.unbind(L.el);
        E(L.el, F.type == "focus" ? "onclick" : "onfocus", function () {
          U(K)
        });
        L.el.initcfg = K
      }
      I(L)
    }

    function J() {
      if (S && V != Y && V[N].readyState != "complete") {
        return false;
      }
      return true
    }

    function D() {
      if (G) {
        func = D.caller;
        while (func != null) {
          var $ = func.arguments[0];
          if ($ && ($ + "").indexOf("Event") >= 0) {
            return $;
          }
          func = func.caller
        }
        return null
      }
      return event
    }
  }

  function R(_, $) {
    return _.currentStyle ? _.currentStyle[$]
        : document.defaultView.getComputedStyle(_,
            false)[$]
  }

  function P(_, $) {
    if (_) {
      if ($ != null) {
        _.style.display = $;
      } else {
        return R(_, "display")
      }
    }
  }

  function I(G, _) {
    var D = G.el ? G.el.nodeName : "INPUT";
    if (_ || G.eCont || new RegExp(/input|textarea|div|span|p|a/ig).test(D)) {
      G.elProp =
          D == "INPUT" ? "value" : "innerHTML";
    } else {
      return;
    }
    if (G.lang == "auto") {
      G.lang =
          S ? navigator.browserLanguage.toLowerCase()
              : navigator.language.toLowerCase();
    }
    if (!G.eCont) {
      for (var C in G) {
        $dp[C] = G[C];
      }
    }
    if (!$dp.dd || G.eCont || ($dp.dd && (G.getRealLang().name != $dp.dd.lang
        || G.skin
        != $dp.dd.skin))) {
      if (G.eCont) {
        E(G.eCont, G);
      } else {
        $dp.dd = V[N].createElement("DIV");
        $dp.dd.style.cssText = "position:absolute";
        V[N].body.appendChild($dp.dd);
        E($dp.dd, G);
        if (_) {
          $dp.dd.style.left = $dp.dd.style.top = "-970px";
        } else {
          $dp.show();
          B($dp)
        }
      }
    } else if ($dp.cal) {
      $dp.show();
      $dp.cal.init();
      if (!$dp.eCont) {
        B($dp)
      }
    }

    function E(K, J) {
      var I = V[N].domain, F = false,
          G = "<iframe hideFocus=true width=9 height=7 frameborder=0 border=0 scrolling=no src=\"about:blank\"></iframe>";
      K.innerHTML = G;
      var _ = $.$langList, D = $.$skinList, H;
      try {
        H = K.lastChild.contentWindow[N]
      } catch (E) {
        F = true;
        K.removeChild(K.lastChild);
        var L = V[N].createElement("iframe");
        L.hideFocus = true;
        L.frameBorder = 0;
        L.scrolling = "no";
        L.src = "javascript:(function(){var d=document;d.open();d.domain='" + I
            + "';})()";
        K.appendChild(L);
        setTimeout(function () {
          H = K.lastChild.contentWindow[N];
          C()
        }, 97);
        return
      }
      C();

      function C() {
        var _ = J.getRealLang();
        K.lang = _.name;
        K.skin = J.skin;
        var $ = ["<head><script>", "",
          "var doc=document, $d, $dp, $cfg=doc.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;",
          "if($cfg.eCont){$dp = {};for(var p in $pdp)$dp[p]=$pdp[p];}else{$dp=$pdp;};for(var p in $cfg){$dp[p]=$cfg[p];}",
          "doc.oncontextmenu=function(){try{$c._fillQS(!$dp.has.d,1);showB($d.qsDivSel);}catch(e){};return false;};",
          "</script><script src=", A, "lang/", _.name, ".js charset=",
          _.charset,
          "></script>"];
        if (F) {
          $[1] = "document.domain=\"" + I + "\";";
        }
        for (var C = 0; C < D.length; C++) {
          if (D[C].name == J.skin) {
            $.push(
                "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + A
                + "skin/"
                + D[C].name
                + "/datepicker.css\" charset=\"" + D[C].charset + "\"/>");
          }
        }
        $.push("<script src=\"" + A + "calendar.js\"></script>");
        $.push(
            "</head><body leftmargin=\"0\" topmargin=\"0\" tabindex=0></body></html>");
        $.push(
            "<script>var t;t=t||setInterval(function(){if(doc.ready){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);</script>");
        J.setPos = B;
        J.onload = Z;
        H.write("<html>");
        H.cfg = J;
        H.write($.join(""));
        H.close()
      }
    }

    function B(J) {
      var H = J.position.left, C = J.position.top, D = J.el;
      if (D == T) {
        return;
      }
      if (D != J.srcEl && (P(D) == "none" || D.type == "hidden")) {
        D = J.srcEl;
      }
      var I = W(D), $ = F(Y), E = M(V), B = b(V), G = $dp.dd.offsetHeight,
          A = $dp.dd.offsetWidth;
      if (isNaN(C)) {
        C = 0;
      }
      if (($.topM + I.bottom + G > E.height) && ($.topM + I.top - G > 0)) {
        C +=
            B.top + $.topM + I.top - G - 2;
      } else {
        C += B.top + $.topM + I.bottom;
        var _ = C - B.top + G - E.height;
        if (_ > 0) {
          C -= _
        }
      }
      if (isNaN(H)) {
        H = 0;
      }
      H += B.left + Math.min($.leftM + I.left, E.width - A - 5) - (S ? 2 : 0);
      J.dd.style.top = C + "px";
      J.dd.style.left = H + "px"
    }
  }
})()